/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import entidades.Fornecedor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import util.ConnectionFactory;

/**
 *
 * @author SERVIDOR
 */
public class FornecedorDAO {
    public void salvarFornecedor(Fornecedor fornecedor) {
        String sql = "insert into fornecedor(nome_fornecedor,valor_deve,id_endereco,id_contato,id_dados_fornecedor)"
                + " VALUES(?,?,?,?,?)";

        Connection conn = null;
        PreparedStatement pstm = null;
        try {
            // Cria uma conexÃ£o com o banco
            conn = ConnectionFactory.getConexao();

            // Cria um PreparedStatment, classe usada para executar a query
            pstm = conn.prepareStatement(sql);
            pstm.setString(1, fornecedor.getNome());
            pstm.setDouble(2, fornecedor.getValor());
            pstm.setInt(3, fornecedor.getEnd().getId());
            pstm.setInt(4, fornecedor.getContato().getId());
            pstm.setInt(5, fornecedor.getDados().getId());
            
            
            // Executa a sql para inserÃ§Ã£o dos dados
            pstm.execute();

        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            // Fecha as conexÃµes
            try {
                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }
    }
    public ArrayList<Fornecedor> buscarFornecedor(String nome) {

        String sql = "select * from fornecedor as f,endereco as e,"
                + "contato as c,dados_fornecedor as d "
                + "where f.id_endereco=e.id_endereco and f.id_contato=c.id_contato "
                + "and f.id_dados_fornecedor=d.id_dados_fornecedor and "
                + "UPPER(nome_fornecedor) LIKE UPPER('%?%')";

        Connection conn = null;
        PreparedStatement pstm = null;
        // Classe que vai recuperar os dados do banco de dados
        ResultSet rset = null;

        try {
            conn = ConnectionFactory.getConexao();

            pstm = conn.prepareStatement(sql);
            pstm.setString(1, nome);

            rset = pstm.executeQuery();
            Fornecedor fornecedorAux = new Fornecedor();
            ArrayList<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
            // Enquanto existir dados no banco de dados, faÃ§a
            while (rset.next()) {

                // Recupera o nome do banco e atribui ele ao objeto
                fornecedorAux.setNome(rset.getString("nome_fornecedor)"));

                // Recupera a idade do banco e atribui ele ao objeto
                fornecedorAux.setValor(rset.getDouble("valor_deve"));
                fornecedorAux.getEnd().setId(rset.getInt("id_endereco"));
                fornecedorAux.getContato().setId(rset.getInt("id_contato"));
                fornecedorAux.getDados().setId(rset.getInt("id_dados_fornecedor"));
                
                fornecedores.add(fornecedorAux);

                // Adiciono o contato recuperado, a lista de contatos
                return fornecedores;

            }
            
        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            try {

                if (rset != null) {

                    rset.close();
                }

                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }

        return null;
    }

        public Fornecedor getFornecedor(String nome) {

        String sql = "select * from fornecedor as f,endereco as e,"
                + "contato as c,dados_fornecedor as d"
                + " =where f.id_endereco=e.id_endereco and f.id_contato=c.id_contato "
                + "and f.id_dados_fornecedor=d.id_dados_fornecedor and "
                + "UPPER(nome_fornecedor) LIKE UPPER('%?%')";

        Connection conn = null;
        PreparedStatement pstm = null;
        // Classe que vai recuperar os dados do banco de dados
        ResultSet rset = null;

        try {
            conn = ConnectionFactory.getConexao();

            pstm = conn.prepareStatement(sql);
            pstm.setString(1, nome);
            

            rset = pstm.executeQuery();
            Fornecedor aux = new Fornecedor();
            // Enquanto existir dados no banco de dados, faÃ§a
            while (rset.next()) {

                // Recupera o nome do banco e atribui ele ao objeto
                aux.setNome(rset.getString("nome_fornecedor"));

                // Recupera a idade do banco e atribui ele ao objeto
                aux.setValor(rset.getDouble("valor_deve"));
                
                aux.getEnd().setId(rset.getInt("id_endereco"));
                aux.getContato().setId(rset.getInt("id_contato"));
                aux.getDados().setId(rset.getInt("id_dados_fornecedor"));

                // Adiciono o contato recuperado, a lista de contatos
                return aux;
            }
        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            try {

                if (rset != null) {

                    rset.close();
                }

                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }

        return null;
    }
}
